package com.xiaogao.serviceMsm.service.Impl;



import com.alibaba.excel.util.StringUtils;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.xiaogao.commonUtils.Result;
import com.xiaogao.serviceMsm.service.MsmService;
import com.xiaogao.serviceMsm.utils.Constants;
import org.springframework.stereotype.Service;

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
//导入可选配置类
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
// 导入对应SMS模块的client
import com.tencentcloudapi.sms.v20210111.SmsClient;
// 导入要请求接口对应的request response类
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;

import java.util.Map;

/**
 * @author 小高
 * @createtime 2021-06-29-15:27
 * @description
 */
@Service
public class MsmServiceImpl implements MsmService {
    /**
     * 发送短信
     * @param code
     * @param phone
     * @return
     */
    @Override
    public boolean send(String code, String phone) {
        if(StringUtils.isEmpty(phone)) return false;
        try {
            // 实例化一个认证对象
            Credential cred = new Credential(Constants.SECRETID,Constants.SECRETKEY);//自己的腾讯key
            // 实例化一个http选项
            HttpProfile httpProfile = new HttpProfile();
            // 指定域名，通常是不需要特地指定域名的
            httpProfile.setEndpoint(Constants.APPURL);
            // 实例化一个客户端配置对象，可以指定超时时间等配置
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);
            // 实例化要请求产品(以sms为例)的client对象
            SmsClient client = new SmsClient(cred,"ap-guangzhou", clientProfile);
            // 实例化一个请求对象
            SendSmsRequest req = new SendSmsRequest();
            // 填充请求参数
            req.setSmsSdkAppId(Constants.SDKAPPID); // 短信应用ID
            req.setSignName(Constants.SIGN); // 签名内容
            req.setTemplateId(Constants.TEMPLATEID); // 模板ID
            String[] phoneNumberSet = {+86+phone}; // 电话
            req.setPhoneNumberSet(phoneNumberSet); // 电话
            String[] templateParamSet = {code}; // 验证码
            req.setTemplateParamSet(templateParamSet); // 模板参数（验证码）
            // 通过 client 对象调用 SendSms 方法发起请求
            SendSmsResponse resp = client.SendSms(req);//发送请求

            // 输出json格式的字符串回包
//            System.out.println(SendSmsResponse.toJsonString(resp));
            return true;
        } catch (TencentCloudSDKException e) {
            e.printStackTrace();
        }
        return false;
    }
}
